#ifndef DENSE_MATRIX_INCLUDE
#define DENSE_MATRIX_INCLUDE

struct denseMatrix_t {
	double *data;
	int numRows;
	int numCols;
	denseMatrix_t *onDevice;
	void allocateData(int numRows, int numCols);
	void allocateDataGPU(int numRows, int numCols);
	denseMatrix_t* copyMatrixToGPU(int numRows, int numCols);
	void copyDataToGPU(denseMatrix_t onDevice);
	denseMatrix_t* transferMatrixToGPU();
	void copyDataToCPU(denseMatrix_t onDevice);
	int nonNullElements();
	void deallocate();
	void deallocateGPU();
	int index(int x, int y);
};

#endif